
package appvideo.logica;

import appvideo.persistencia.Persistencia_Usuarios;
import java.util.List;
import java.util.Date;


public class Empleado extends Usuario{
    //Usuario tiene salario
    private Salario salario;
    private int id;

    public Empleado(String nombre, String apellidos, String dni, String email, int tlf, Salario sal, Date fAlta, String password) {
        super(nombre, apellidos, dni, email, tlf, fAlta,password);
        this.salario = sal;
    }
    
    public Empleado(int id,String nombre, String apellidos, String dni, String email, int tlf, Salario sal,Date fAlta, String password) {
        super(nombre, apellidos, dni, email, tlf, fAlta,password);
        this.id=id;
        this.salario = sal;
    }
    public Empleado(){};
    
    public int getId() {
        return id;
    }

    public Salario getSalario() {
        return salario;
    }

    public void setSal(Salario sal) {
        this.salario = sal;
    }

    //Este metodo añade un empleado en la Base de Datos.
    @Override
    public boolean altaUsuario(){
        boolean ret = Persistencia_Usuarios.altaUsuario(this);
        //Si esta en alta->devolvemos un aviso
        if(ret==false){
            System.out.println("Empleado "+this.getNombre()+" no pudo añadirse en la base de datos");
        }else{
            System.out.println("Empleado "+this.getNombre()+" añadido a la Base de Datos");
        }
        
        return ret;
    }
    //Este metodo cambia el campo estado de un empleado de la Base de Datos.
    @Override
    public boolean bajaUsuario(){
        boolean ret = Persistencia_Usuarios.bajaUsuario(this); 
        //Si el empleado no está en la Base de datos genera aviso.
        if(ret==true){
            System.out.println("Baja realizada");
        }else
            System.out.println("Baja no realizada");
        return ret;
    }
    
    @Override
    public boolean modificaUsuario(){
        boolean ret=false;
        ret=Persistencia_Usuarios.modificaUsuario(this);
        if(ret==false){
            System.out.println("No se pudo realizar la modificacion del empleado de DNI "+this.getDni());
        }else{
            System.out.println("Modificaciones de empleado de DNI "+this.getDni()+" realizadas");
        }
        return ret;
    }
    
    public static void visualizaEmpleados(){
        List<Usuario> empleados;
        String dev="";
        //Ir a la base de datos a por la lista de empleados.
        System.out.println("Bases de datos devolviendo todos los empleados del videoclub\n");
        empleados=Persistencia_Usuarios.getUsuarios(new Empleado());
        
        for(Usuario u: empleados){
            Empleado e = (Empleado)u;
            System.out.println(e.toString());
        }
    }
    
    public static Empleado buscaUsuario(String dni){
        Empleado e;
        //Busca el empleado en la BD y me lo devuelve
        System.out.println("Buscando empleado de dni "+dni+" en la BASE DE DATOS");
        e=(Empleado)Persistencia_Usuarios.buscaUsuario(dni, new Empleado());
        if(e==null)
            System.out.println("No existe el empleado de dni: "+dni);
        else{
            System.out.println("Empleado encontrado");
        }
        
        return e;
    }
    @Override
    public String toString(){
        return super.toString()+"\t"+salario.toString();
    }
    
}
